public interface BinaryTTree<T> {                       //二叉树抽象数据类型，T表示数据元素的数据类型
    boolean isEmpty();                                  //判断是否为空，若空返回true
    void insert(T x);                                   //插入x元素作为根结点
    BinaryNode<T> insert(BinaryNode<T> p,boolean left,T x);     //插入x作为p结点的左/右孩子并返回
    void remove(BinaryNode<T> p,boolean left);          //删除p结点的左/右子树
    void clear();                                       //删除二叉树的所有结点
    void preorder();                                    //先根次序遍历二叉树
    void inorder();                                     //中根次序遍历二叉树
    void postorder();                                   //后根次序遍历二叉树
    void levelorder();                                  //层次遍历二叉树
    int size();                                         //返回元素个数
    int height();                                       //返回二叉树的高度
    BinaryNode<T> search(T key);                        //查找并返回首个与key相等元素的特点
    int level(T key);                                   //返回首个与key相等元素结点所在的层次
    void remove(T key);                                 //查找并删除首个以与key相等元素为根的子树
}
